查看原文
其他

C# 录制视频框架

DotNet 2021-09-23

(给DotNet加星标,提升.Net技能

转自:Kogel
cnblogs.com/kogel/p/12166398.html


前言


这是一个使用C#语言制作的录制框架(基于AForge),支持录制桌面,多屏,声音,摄像头,某个应用程序的界面。

 

一、安装


使用此框架需要安装扩展包Kogel.Record,可以Nuget上搜索


或者使用Nuget命令


Install-Package Kogel.Record


安装完成包后会出现一个DLL文件夹,里面会有一些依赖的DLL



选中全部后右击-属性,设置复制到输出目录-始终复制



二、定义


需要在应用程序的主入口点初始化下全局配置


//初始化DLL配置
Global.InitDllPath();


 

还需要在App.config中设置兼容.NetFramework2.0


<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
<supportedRuntime version="v2.0.50727"/>
</startup>



三、录制桌面


使用ScreenRecorder类


首先创建桌面录制类对象


//视频存放路径
string recorderPath = AppDomain.CurrentDomain.BaseDirectory + DateTime.Now.ToString("MMddHHmmss") + ".avi";

//初始化录制器 (第一个参数是路径,第二个参数是帧数,第三个参数是是否录制声音)
var recorder = new ScreenRecorder(recorderPath, 10, true);


还可以设置画质(第四个参数)Raw为原画画质,建议不要使用(一分钟几个G),默认为MSMPEG4v2(高清,标清)


recorder = new ScreenRecorder(recorderPath, 10, true, AForge.Video.FFMPEG.VideoCodec.Raw);


开始录制


//开始并设置每帧回调
recorder.Start(VideoStreamer_NewFrame);


/// <summary>
/// 每帧录制帧数回调
/// </summary>
/// <param name="sender"></param>
/// <param name="eventArgs"></param>
private void VideoStreamer_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
//显示图片流
this.picScreen.Image = (Bitmap)eventArgs.Frame.Clone();
}


暂停录制


recorder.Pause();


结束录制


recorder.End();


第一次使用此框架VS可能会弹出警告



选中“从以下位置引发时除外”和取消选中“引发此异常类型时中断”,此问题后续就不会再出现


四、Demo示例

 


此框架还支持录制桌面,多屏,声音,摄像头,某个程序的界面


框架开源,完整Demo可以去Github上下载:


https://github.com/a935368322/Kogel.Record.Test.git


推荐阅读  点击标题可跳转
什么?原来C#还有这两个关键字Mbp 一个用于学习.NET Core的开发框架ASP.NET Core开源任务调度平台 快速上手


看完本文有收获?请转发分享给更多人

关注「DotNet」加星标,提升.Net技能 

好文章,我在看❤️

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存